Part Number Hot Search : 
T1310 2SC5335 33660 AD605BRZ RT8011 2SC929 RT8011 TCD1205D
Product Description
Full Text Search
 

To Download FT639 Datasheet File

  If you can't view the Datasheet, Please click here to try to view without PDF Reader .  
 
 


  Datasheet File OCR Text:
 FerretTronics Control Circuits http://www.ferrettronics.com/
FerretTronics FT639 Servo Controller Chip
Data Sheet
General Description:
The FT639 is an RC servo controller chip. The FT639 will control five radio-controlled servos through one 2400 baud serial line. It has a footprint of only eight pins. The only external components required are two resistors and a diode for an normal RS232 line such as the one found on a personal computer. No components are needed for a 0-5 volt serial line such as those found on the Parallax Basic Stamp . Just connect the servo control lines directly to the chip and connect the serial in line from a 2400 baud, No parity, 1 stop bit serial source, and five RC servos can be controlled, (see circuit setup).
Applications:
Radio control servo motors are used in remote control model airplanes, cars, and boats. They are widely available and can be used in robotics, automation, animation, and many other tasks. The problem with using RC servo motors in the past was the ability to control them. With the FT639 this is no longer a problem. It is possible now to control five RC servo motors with just one 2400 baud serial line. Each of the five RC servos is independently controlled.
Voltage on V++: Voltage on 2400 Baud In: Serial Line Setup: 3.0V - 5.5V < = V++ 2400 Baud, 8 Bit, No parity, and 1 Stop Bit
Page 1 of 7
FerretTronics Control Circuits http://www.ferrettronics.com/
Operations:
FT639 has two operating modes: Setup mode and Active mode. The chip starts in Setup mode. Setup mode is used to set the pulse length, header length and starting values for the 5 servos. Active mode sends the control pulses to the servos and controls the servos through the 2400 baud serial line. Commands are sent to the FT639 through a 2400 baud, 8 bit, no parity, 1 stop bit serial line. The commands are all one byte. Each command is one character sent over the 2400 baud serial line. Each RC servo has 256 positions. To send the position of a servo to the FT639 requires two commands. The first command contains the servo number and the lower nibble (lower 4 bits) of the positional number. The second command contains the servo number and the upper nibble (upper 4 bits) of the positional number. The FT639 can set a typical servo in 256 different positions from 0 to 90 degrees with the short pulse length, or can control a typical servo in 256 different positions from 0 to 180 degrees with the long pulse length. The starting position of the servo can also be adjusted by using a different header length. The header length can be adjusted in the setup mode. Setup Mode: The servo controller starts in Setup mode. The default settings are the header is approximately 1ms with a short pulse length. This will control a typical servo in 256 steps from 0 to 90 degrees.
In setup mode the following settings can be adjusted: 1. Header length--this will allow adjustment of the starting position of the servo. The default setting is 12. 2. Servo pulse length--this allows positioning control of the servo between 0 to 90 degrees with the shorter pulse length or positioning control of the servo between 0 to 180 degrees with the longer pulse length. The default setting is short pulse length. 3. Initial setup of the servo positions--the FT639 will not send positioning pulses to the servo in Setup mode. However, positioning commands can be sent to the FT639 while in setup mode to allow the servos to energize in a known position. The default setting is position 0. The following commands can be sent in Setup mode:
Command Active Mode Short Pulse Long Pulse
Binary Value 01110101 01010101 01011010
Decimal Value 117 85 90
The header length command is 0110xxxx, where xxxx is the setting for the header length. The actual length of the header will be different for the different pulse length as shown below:
Page 2 of 7
FerretTronics Control Circuits http://www.ferrettronics.com/
Header Value
Short Pulse Length .147 ms .219 ms .291 ms .363 ms .435 ms .507 ms .579 ms .651 ms .723 ms .795 ms .867 ms .939 ms
Long Pulse Length
Control Control Byte Decimal
Active Mode: In Active mode the servo control pulses are sent to the servos. The servos will be energized in this mode. There are only two commands that are allowed in this mode. Positional commands and the setup command. The setup command puts the FT639 back into Setup mode. The position of a servo can be changed by sending a positional command. The positional commands are sent in Active mode exactly the same as they were in Setup mode (see instructions above). Sending a positional command will make the servo move to the new position as soon as the upper byte command is sent. The following commands are available in the active mode:
Binary Value 01111010 Decimal Value 122
0 1 2 3 4 5 6 7 8 9 10 11
.237 ms 01100000 .357 ms 01100001 .477 ms 01100010 .597 ms 01100011 .717 ms 01100100 .837 ms 01100101 .957 ms 01100110 1.077 ms 01100111 1.197 ms 01101000 1.317 ms 01101001 1.437 ms 01101010 1.557 ms 01101011 1.677 ms 01101100 1.797 ms 01101101 1.917 ms 01101110 2.037 ms 01101111
96 97 98 99 100 101 102
Command 103 104 105 106 107 108 109 110 111 Setup Mode
Positional Commands: To send a positional command to the individual servos, two bytes must be sent. The first byte sent contains the lower nibble of the position byte and the second byte sent contains the upper nibble of the position byte. The lower byte command must be sent before the upper byte command. The format for the bytes are:
Lower Byte = 0sssxxxx Upper Byte = 1sssyyyy sss = Servo number:
12 1.011 ms 13 1.083 ms 14 1.155 ms 15 1.227 ms
Page 3 of 7
FerretTronics Control Circuits http://www.ferrettronics.com/
000 = servo 1 001 = servo 2
2 3
255 11111111 0 00000000 49 00110001 185 10111001 255 11111111 0 00000000 49 00110001 185 10111001 255 11111111 0 00000000 49 00110001 185 10111001 255 11111111
00011111 00100000 00100001 00101001 00101111 00110000 00110001 00111001 00111111 01000000 01000001 01001001 01001111
10011111 10100000 10100011 10101011 10101111 10110000 10110011 10111011 10111111 11000000 11000011 11001011 11001111
31 32 33 41 47 48 49 57 63 64 65 73 79
159 160 163 171 175 176 179 187 191 192 195 203 207
010 = servo 3
3
011 = servo 4
3
100 = servo 5
3
xxxx = the lower nibble of the position byte
4
yyyy = the upper nibble of the position byte
4 4
A table is shown below with the Lower and Upper Byte for various positional commands:
Binary Value Position Value Servo Decimal Value Binary Value Lower Byte (0sssxxxx) 00000000 00000001 00001001 00001111 00010000 00010001 00011001 Upper Byte (1sssyyyy) 10000000 10000011 10001011 10001111 10010000 10010011 10011011 Decimal Value Lower Byte 0 1 9 15 16 17 25 Upper Byte 128 131 139 143 144 147 155
4 5 5 5 5
1 1 1 1 2 2 2
0 00000000 49 00110001 185 10111001 255 11111111 0 00000000 49 00110001 185 10111001
Page 4 of 7
FerretTronics Control Circuits http://www.ferrettronics.com/
Circuit Diagram:
DECLARE DECLARE DECLARE DECLARE DECLARE CONST CONST CONST CONST CONST
SUB SUB SUB SUB SUB
servo1 servo2 servo3 servo4 servo5
(value (value (value (value (value
AS AS AS AS AS
INTEGER) INTEGER) INTEGER) INTEGER) INTEGER)
ACTIVE = 117 LONGPULSE = 90 SHORTPULSE = 85 HEADER = 96 SETUP = 122
Note: For a serial line that has voltage from 0 to V++ requires no diode resistor network. The line can be connected directly to the serial-in pin on the FT639.
Example Code:
Other programming examples can be found at: http://www.ferrettronics.com/software.html
'######################################### '# This is a QBASIC programming example '# For controlling the FT639 '######################################### DECLARE SUB servoMove (servoNum!, value!)
Page 5 of 7
' Opens COM Port 1 for sending out serial commands OPEN "COM1:2400,N,8,1,CD0,CS0,DS0,OP0,RS,TB2048,RB2048" FOR RANDOM AS #1 ' This command will put the FT639 in the setup mode PRINT #1, CHR$(SETUP); ' This command will put the FT639 in the long pulse mode PRINT #1, CHR$(LONGPULSE); ' This command will put the FT639 in the Short pulse mode 'PRINT #1, CHR$(SHORTPULSE); ' This command will set the header at 3 PRINT #1, CHR$(HEADER + 3); ' This command will put the FT639 in the active mode PRINT #1, CHR$(ACTIVE); '-----------------------------------' Loop to cycle through all positions '-----------------------------------FOR i = 0 TO 255 ' Cause a delay FOR J = 1 TO 100000 NEXT J ' Moves the servos through all positions
FerretTronics Control Circuits http://www.ferrettronics.com/
servo1 servo2 servo3 servo4 servo5 NEXT i
(I) (I) (I) (I) (I)
lV = value - (uV * 16) uV = uV + 128 + 32 lV = lV + 32 PRINT #1, CHR$(lV); PRINT #1, CHR$(uV); END SUB '-----------------' Positions servo 4 '-----------------SUB servo4 (value AS INTEGER) DIM uV AS INTEGER DIM lV AS INTEGER uV = INT(value / 16) lV = value - (uV * 16) uV = uV + 128 + 48 lV = lV + 48 PRINT #1, CHR$(lV); PRINT #1, CHR$(uV); END SUB '-----------------' Positions servo 5 '-----------------SUB servo5 (value AS INTEGER) DIM uV AS INTEGER DIM lV AS INTEGER uV = INT(value / 16) lV = value - (uV * 16) uV = uV + 128 + 64 lV = lV + 64 PRINT #1, CHR$(lV); PRINT #1, CHR$(uV); END SUB '----------------------------------------------------------' Positions any servo given servo number and positional value '-----------------------------------------------------------
'-----------------' Positions servo 1 '-----------------SUB servo1 (value AS INTEGER) DIM uV AS INTEGER DIM lV AS INTEGER uV = INT(value / 16) lV = value - (uV * 16) uV = uV + 128 PRINT #1, CHR$(lV); PRINT #1, CHR$(uV); END SUB '-----------------' Positions servo 2 '-----------------SUB servo2 (value AS INTEGER) DIM uV AS INTEGER DIM lV AS INTEGER uV = INT(value / 16) lV = value - (uV * 16) uV = uV + 128 + 16 lV = lV + 16 PRINT #1, CHR$(lV); PRINT #1, CHR$(uV); END SUB '-----------------' Positions servo 3 '-----------------SUB servo3 (value AS INTEGER) DIM uV AS INTEGER DIM lV AS INTEGER uV = INT(value / 16)
Page 6 of 7
FerretTronics Control Circuits http://www.ferrettronics.com/
SUB servoMove (servoNum, value) DIM uV AS INTEGER DIM lV AS INTEGER uV = INT(value / 16) lV = value - (uV * 16) uV = uV + 128 + (servoNum - 1) * 16 lV = lV + (servoNum - 1) * 16 PRINT #1, CHR$(lV); PRINT #1, CHR$(uV); END SUB
Page 7 of 7


▲Up To Search▲   

 
Price & Availability of FT639

All Rights Reserved © IC-ON-LINE 2003 - 2022  

[Add Bookmark] [Contact Us] [Link exchange] [Privacy policy]
Mirror Sites :  [www.datasheet.hk]   [www.maxim4u.com]  [www.ic-on-line.cn] [www.ic-on-line.com] [www.ic-on-line.net] [www.alldatasheet.com.cn] [www.gdcy.com]  [www.gdcy.net]


 . . . . .
  We use cookies to deliver the best possible web experience and assist with our advertising efforts. By continuing to use this site, you consent to the use of cookies. For more information on cookies, please take a look at our Privacy Policy. X